// src/stores/user.js
import { defineStore } from 'pinia'

// 定义用户 Store
export const useUserStore = defineStore('user', {
  state: () => ({
    tokenInfo: null,
    userId: '',
    username: '',      // 新增：用户名（用于购物车、订单等业务）
    realName: '',      // 新增：真实姓名
    token: ''
  }),
  actions: {
    // 登录/同步用户状态
    setTokenInfo(tokenInfo) {
        // Sa-Token返回的tokenInfo包含用户信息
        this.tokenInfo = tokenInfo
        this.userId = tokenInfo?.loginId || ''
        this.token = tokenInfo?.tokenValue || ''
        
        // 从tokenInfo中提取username和realName（后端登录时存入Session）
        // 如果tokenInfo中没有，可以通过额外的API获取用户信息
        this.username = tokenInfo?.username || tokenInfo?.loginId || 'guest'
        this.realName = tokenInfo?.realName || ''

        localStorage.setItem('tokenInfo', JSON.stringify(tokenInfo))
    },
    
    // 设置用户详细信息（可选：如果登录接口不返回username）
    setUserInfo(userInfo) {
      this.username = userInfo?.username || this.userId
      this.realName = userInfo?.realName || ''
    },
    
    // 退出登录
    logout() {
      this.$reset();
      localStorage.removeItem('tokenInfo') // 清除本地存储
    },
    
    // 从localStorage恢复用户状态（应用启动时调用）
    restoreUserState() {
      try {
        const savedTokenInfo = localStorage.getItem('tokenInfo')
        if (savedTokenInfo) {
          const tokenInfo = JSON.parse(savedTokenInfo)
          this.setTokenInfo(tokenInfo)
        }
      } catch (error) {
        console.error('恢复用户状态失败:', error)
        this.logout()
      }
    }
  },
  getters: {
    isLoggedIn: (state) => !!state.token && !!state.tokenInfo && state.tokenInfo.isLogin,
    // 获取当前用户名（优先使用username，fallback到userId）
    currentUsername: (state) => state.username || state.userId || 'guest'
  }
});
